package com.cfpamf.ms.insur.pay.integration;

import com.cfpamf.ms.insur.pay.integration.dto.*;

import javax.servlet.http.HttpServletRequest;

/**
 * 支付抽象接口
 *
 * @author zhangnayi
 */
public interface BankPayService {

    /**
     * 预下单接口
     *
     * @param params
     * @return
     */
    BankPreCreateOrderRetDTO bankPreCreateOrder(BankPreCreateOrderParamDTO params);

    /**
     * 订单支付接口
     *
     * @param params
     * @return
     */
    BankPayOrderRetDTO bankPayOrder(BankPayOrderParamDTO params);

    /**
     * 订单查询接口
     *
     * @param params
     * @return
     */
    BankQueryOrderRetDTO bankQueryOrderInfo(BankQueryOrderParamDTO params);

    /**
     * 订单退款接口
     *
     * @param params
     * @return
     */
    BankRefundOrderRetDTO bankRefundOrder(BankRefundOrderParamDTO params);

    /**
     * 查询退款接口
     *
     * @param params
     * @return
     */
    BankQueryRefundRetDTO bankQueryRefund(BankQueryRefundParamDTO params);

    /**
     * 校验第三方支付回调信息
     *
     * @param request
     * @param sourceSys
     * @return
     */
    BankPayCheckNotifyRetDTO bankCheckPayNotify(String sourceSys, HttpServletRequest request);

    /**
     * 校验第三方退款回调信息
     *
     * @param request
     * @param sourceSys
     * @return
     */
    BankRefundCheckNotifyRetDTO bankCheckRefundNotify(String sourceSys, HttpServletRequest request);
}
